package com.wicket.okrapp.integration.dto;

import com.wicket.okrapp.common.dto.BaseDto;
import com.wicket.okrframework.base.service.dto.req.DeptDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * @desc AddOfficialDocumentReqDto
 * @使用场景
 */
@Data
public class AddOfficialDocumentReqDto extends BaseDto implements Serializable {

  /**
   * 公文名称
   */
  @NotNull(message = "公文名称不能为空")
  @ApiModelProperty("公文名称")
  private String officialDocumentName;

  /**
   * 公文编号
   */
  @ApiModelProperty("公文编号")
  private String officialDocumentNum;

  /**
   * 通知描述
   */
  @ApiModelProperty("通知描述")
  private String notificationDescription;

  /**
   * 接收范围 EVERYONE:所有人 DEPT:部门 PERSON:个人
   */
  @NotNull(message = "接收范围不能为空")
  @ApiModelProperty("接收范围")
  private String receiveRange;

  /**
   * 通知类型 OFFICIAL_DOCUMENT:公文 NOTIFICATION:通知
   */
  @NotNull(message = "通知类型不能为空")
  @ApiModelProperty("通知类型")
  private String notificationType;

  /**
   * 公文文档ID
   */
  @ApiModelProperty("公文文档ID")
  private String officialDocumentUnstructuredDataId;

  /**
   * 文档后缀
   */
  @ApiModelProperty("公文文档后缀")
  private String postfix;

  /**
   * 文件相对路径地址
   */
  @ApiModelProperty("公文文档相对路径地址")
  private String fileRelativePathAccess;

  /**
   * 来源文档关系ID
   */
  @ApiModelProperty("来源文档关系ID")
  private String sourceRelationshipId;

  /**
   * 关系类型编码 DIRECT_RELATION:直接关系 INDIRECT_RELATIONSHIP:间接关系
   */
  @ApiModelProperty("关系类型编码")
  private String relationshipType;

  /**
   * 是否是网盘引用关系 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否是网盘引用关系")
  private String isNetworkReference;

  /**
   * 提醒层级
   */
  @ApiModelProperty("提醒层级")
  private Long remindLevel;

  /**
   * 是否开启工作任务 TRUE:是 FALSE:否
   */
  @NotNull(message = "是否开启工作任务不能为空")
  @ApiModelProperty("是否开启工作任务")
  private String isOpenWorkTask;

  /**
   * 指定工作任务安排人就职记录ID
   */
  @ApiModelProperty("指定工作任务安排人就职记录ID")
  private String appointWorkTaskArrangeInductionId;

  /**
   * 下发主体ID
   */
  @ApiModelProperty("下发主体ID")
  private String issueSubjectId;

  /**
   * 下发主体类型编码 ORG:组织 DEPT:部门
   */
  @ApiModelProperty("下发主体类型编码")
  private String issueSubjectTypeCode;

  /**
   * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
   */
  @NotNull(message = "主体生命周期不能为空")
  @ApiModelProperty("主体生命周期")
  private String subjectLifeCycle;

  @ApiModelProperty("部门列表")
  private List<DeptDto> deptList = new ArrayList<>();

  @ApiModelProperty("就职记录列表 ")
  List<String> orgInductionRecordList = new ArrayList<>();

  @ApiModelProperty("文档列表")
  private List<DocumentDto> documentList = new ArrayList<>();

}
